# 2024.11.10力扣网刷题
# 有序数组中的单一元素——数组、二分查找——中等
# 给你一个仅由整数组成的有序数组，其中每个元素都会出现两次，唯有一个数只会出现一次。
# 请你找出并返回只出现一次的那个数。
# 你设计的解决方案必须满足 O(log n) 时间复杂度和 O(1) 空间复杂度。
# 示例 1:
# 输入: nums = [1, 1, 2, 3, 3, 4, 4, 8, 8]
# 输出 : 2
# 示例 2 :
# 输入 : nums = [3, 3, 7, 7, 10, 11, 11]
# 输出 : 10
# 提示:
# 1 <= nums.length <= 10^5
# 0 <= nums[i] <= 10^5


class Solution(object):
    def singleNonDuplicate(self, nums):
        """
        :type nums: List[int]
        :rtype: int
        """
        l, r = 0, 1
        ans = nums[0]
        length = len(nums)
        while r < length:
            if nums[l] != nums[r]:
                if r - l == 1:
                    break
                l = r
                ans = nums[r]
            r += 1
        return ans
